def firstDef():
    """
    打印 "Hello World!" 到控制台。
    该函数不接受任何参数，也没有返回值。
    """
    print("Hello World!")


firstDef()


def add(a, b):
    """
    计算两个数的和。

    参数:
    a (int/float): 第一个数。
    b (int/float): 第二个数。

    返回:
    int/float: 两个数的和。
    """
    return a + b


print(add(1, 2))
add1 = add(10, 20)
print(add1)


# 函数嵌套
def outer():
    """
    外层函数，用于演示函数嵌套。
    该函数会打印 "outer"，并调用内层函数 inner()。
    """
    print("outer")

    def inner():
        """
        内层函数，用于演示函数嵌套。
        该函数会打印 "inner"。
        """
        print("inner")

    inner()


outer()
help(outer)


def user_info(name, age):
    """
    打印用户信息。

    参数:
    name (str): 用户的姓名。
    age (int): 用户的年龄。
    """
    print("用户信息")
    print("姓名:", name)
    print("年龄:", age)


user_info("Tom", 20)
user_info("Jerry", age=22)


def user_info(name="zs", age=18):
    """
    打印用户信息。

    参数:
    name (str): 用户的姓名。
    age (int, optional): 用户的年龄。默认为 18。
    """
    print("用户信息")
    print("姓名:", name)
    print("年龄:", age)


print(user_info())


def message(*name, age, **info):
    """
    打印用户信息。

    该函数接受用户的姓名、年龄以及其他可选信息，并将这些信息打印出来。

    参数:
    *name (tuple): 可变数量的姓名参数，以元组形式传递。
    age (int): 用户的年龄，必须作为关键字参数传递。
    **info (dict): 可变数量的其他用户信息，以字典形式传递。

    返回值:
    无返回值。
    """
    # 打印用户信息标题
    print("用户信息")

    # 打印用户姓名
    print("姓名:", name)

    # 打印用户年龄
    print("年龄:", age)

    # 打印其他用户信息
    print("其他信息:", info)


print("=" * 50)
message("zs", "ks", "wa", age=[20, 30, 40], city=["上海", "beijing"])
